import os
from openai import OpenAI

# 诗词类型选项
poetry_types = {
    "1": "五言绝句",
    "2": "七言绝句", 
    "3": "五言律诗",
    "4": "七言律诗",
    "5": "词"
}

# 词牌名选项（当选择"词"时使用）
ci_pai_names = {
    "1": "浣溪沙",
    "2": "水调歌头", 
    "3": "念奴娇",
    "4": "蝶恋花",
    "5": "满江红"
}

def generate_poetry(client, poetry_type, theme, ci_pai=None):
    """生成指定类型和主题的诗词"""
    if poetry_type == "词" and ci_pai:
        prompt = f"""
        请以{ci_pai}为词牌，创作一首以「{theme}」为主题的词。
        
        要求：
        1. 符合该词牌的格律要求
        2. 意境优美，语言凝练
        3. 体现主题思想
        4. 附上简要的创作说明
        """
    else:
        prompt = f"""
        创作一首{poetry_type}，以「{theme}」为主题。
        
        要求：
        1. 符合{poetry_type}的格律要求
        2. 意境优美，对仗工整（如果是律诗）
        3. 体现主题思想
        4. 附上简要的创作说明
        """
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一位博学的古典诗词专家，精通各种诗词格律和创作技巧。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.8,  # 稍高的温度以增加创造性
        max_tokens=1500
    )
    
    return response.choices[0].message.content

def analyze_poetry(client, poetry_text):
    """鉴赏分析诗词"""
    prompt = f"""
    请对以下诗词进行专业鉴赏和分析：
    
    {poetry_text}
    
    请从以下方面进行分析：
    1. 格律特点（平仄、押韵、对仗等）
    2. 意象运用和意境营造
    3. 语言艺术和修辞手法
    4. 情感表达和思想内涵
    5. 历史背景和文学价值（如能推断）
    
    分析应该专业、深入，引用相关文学理论。
    """
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一位资深文学评论家，擅长古典诗词的鉴赏和分析。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.7,
        max_tokens=1200
    )
    
    return response.choices[0].message.content

def continue_poetry(client, existing_lines, direction):
    """续写诗词"""
    prompt = f"""
    请根据以下诗句和提示方向，续写完整的诗词：
    
    已有诗句：{existing_lines}
    续写方向：{direction}
    
    要求：
    1. 保持原有风格和格律
    2. 意境连贯，逻辑通顺
    3. 完成后附上简要说明
    """
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一位才华横溢的诗人，擅长根据已有诗句进行创造性续写。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.8,
        max_tokens=1000
    )
    
    return response.choices[0].message.content

def poetry_app():
    """诗词助手应用主函数"""
    
    client = OpenAI(api_key="你的API_Key", base_url="https://api.deepseek.com")
    
    print("诗词创作与鉴赏助手")
    print("1. 生成诗词")
    print("2. 鉴赏诗词")
    print("3. 续写诗词")
    
    choice = input("请选择功能: ")
    
    if choice == "1":
        print("诗词类型选项:")
        for key, value in poetry_types.items():
            print(f"{key}. {value}")
        type_choice = input("选择诗词类型: ")
        
        poetry_type = poetry_types.get(type_choice, "五言绝句")
        
        ci_pai = None
        if poetry_type == "词":
            print("词牌名选项:")
            for key, value in ci_pai_names.items():
                print(f"{key}. {value}")
            ci_choice = input("选择词牌名: ")
            ci_pai = ci_pai_names.get(ci_choice, "浣溪沙")
        
        theme = input("请输入诗词主题: ")
        
        poetry = generate_poetry(client, poetry_type, theme, ci_pai)
        print(f"\n生成的诗词:\n{poetry}")
        
    elif choice == "2":
        poetry_text = input("请输入要鉴赏的诗词: ")
        analysis = analyze_poetry(client, poetry_text)
        print(f"\n诗词鉴赏:\n{analysis}")
        
    elif choice == "3":
        existing_lines = input("请输入已有诗句: ")
        direction = input("请输入续写方向或主题: ")
        
        continuation = continue_poetry(client, existing_lines, direction)
        print(f"\n 续写结果:\n{continuation}")

if __name__ == "__main__":
    poetry_app()